package br.ufrj.dcc;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;

class Comunicador implements Runnable {
	
	private Socket socketDeComunicacao;
	private String requisicao;
	PrintStream out=null;
	DataInputStream in=null;

	Comunicador(Socket socket) {
		this.socketDeComunicacao=socket;
		
	}

	public void run () {


		try {
			DataInputStream in = new DataInputStream (socketDeComunicacao.getInputStream());
			PrintStream out = new PrintStream(socketDeComunicacao.getOutputStream());

			while(true){
				while((requisicao = in.readLine()) != null ) {
					//resposta basica
					
					if(requisicao.startsWith("::")){
						String respostaTratamentoServidor=((Servidor)Servidor.getOneInstance()).trataRequisicao(requisicao, socketDeComunicacao.getRemoteSocketAddress());
						out.println(respostaTratamentoServidor);
					}
					else
						out.println(requisicao.charAt(0));
					//if ((respostaTratamentoServidor=((Servidor)Servidor.getOneInstance()).trataRequisicao(requisicao,socketDeComunicacao.getRemoteSocketAddress())).equalsIgnoreCase("")){
						// se a mensagem for muito grande exigirá outros cuidados
					//}
					//else {
					//	out.println(respostaTratamentoServidor);
						
				//	}
					//nesse caso o servidor realizará o resto da comunicação através dos métodos do comunicador
					//e depois o controle será retomado ao comunicador

				}
			}
		} catch (IOException e) {
			System.out.println("erro no socket , provavelmente cliente desconectou");
			Thread.currentThread().stop();
		}
	}


}
